BibliotecaAuxiliarScript.execute('framework.src.util.gui.BibliotecaAuxiliarDesenho');

Frame = {};

Frame.collection_component = nil;
Frame.id = id;
Frame.nb_px = 0;
Frame.nb_py = 0;
Frame.nb_altura = 0;
Frame.nb_largura = 0;
Frame.cor_fundo = nil;
Frame.buffer = nil;

function Frame.__index(tabela,chave)
		return Frame[chave];
end

function Frame.new(o)
	local retorno = o or {};
	retorno = setmetatable(retorno,Frame);
	retorno.collection_component = {};
	retorno.cor_fundo = Cor.new({r=0,g=0,b=0});
	return retorno;
end

function Frame:draw()

	self.buffer = BibliotecaAuxiliarDesenho.newImagem(self.nb_largura,self.nb_altura);
	BibliotecaAuxiliarDesenho.limparTela(self.buffer,self.cor_fundo);
	
	for i,v in pairs(self.collection_component) do
		if(v.is_visible ~= nil and v.is_visible == true)then
			BibliotecaAuxiliarDesenho.desenharImagem(v.nb_px,v.nb_py,v:draw(),self.buffer);	
		end
	end
	
	return self.buffer;
end

function Frame:addComponent(component,indice,id)
	if(indice ~= nil) then
		self.collection_component[indice] = component;
	end
	
	if(id ~= nil) then
		self.collection_component[id] = component;
	end
end


function Frame:handler(evt)
	for i,v in pairs(self.collection_component) do
		if(v.is_foco ~= nil and v.is_foco == true)then
			if(v.handler ~= nil)then
				v:handler(evt);
			end
		end
	end
	
	if(self.action ~= nil)then
		self:action(evt);
	end
end

package.seeall(Frame);
module("Frame");
